'use strict'
const path = require('path')

function resolve(dir) {
    return path.join(__dirname, dir)
}

const name = '商城管理系统' // 页面标题
const port = process.env.port || process.env.npm_config_port || 9528 // dev port

// 添加环境变量 - 修改为静态值，避免在构建过程中被覆盖
const API_BASE = ''  // 修改为空字符串，不进行路径前缀处理
process.env.VUE_APP_BASE_API = API_BASE
process.env.VUE_APP_ROUTER_MODE = 'hash'
process.env.VUE_APP_TITLE = '商城管理系统'

// 您的后端服务地址
const backendUrl = 'http://localhost:9090' // 修改为您的后端服务器地址和端口

module.exports = {
    publicPath: '/',
    outputDir: 'dist',
    assetsDir: 'static',
    lintOnSave: process.env.NODE_ENV === 'development',
    productionSourceMap: false,
    devServer: {
        port: port,
        open: true,
        overlay: {
            warnings: false,
            errors: true
        },
        proxy: {
            // 开发环境代理配置 - 所有请求都代理到后端，不进行路径重写
            '/': {
                target: backendUrl,
                changeOrigin: true,
                logLevel: 'debug' // 添加调试日志级别
            }
        },
        disableHostCheck: true
    },
    configureWebpack: {
        // 在webpack的name字段中提供应用程序的标题，以便可以在index.html中访问它来注入正确的标题
        name: name,
        resolve: {
            alias: {
                '@': resolve('src')
            }
        }
    },
    chainWebpack(config) {
        // 它可以提高第一屏的速度，建议开启预加载
        config.plugin('preload').tap(() => [
            {
                rel: 'preload',
                // to ignore runtime.js
                fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
                include: 'initial'
            }
        ])

        // 当页面太多时，会导致太多无意义的请求
        config.plugins.delete('prefetch')

        // 设置svg-sprite-loader
        config.module
            .rule('svg')
            .exclude.add(resolve('src/icons'))
            .end()
        config.module
            .rule('icons')
            .test(/\.svg$/)
            .include.add(resolve('src/icons'))
            .end()
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .options({
                symbolId: 'icon-[name]'
            })
            .end()
    }
} 